﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace SysCommon.Tools
{
    public class ExportDataGridViewToExcelTool
    {
        public static void ExportDataGridViewToExcel(DataGridView dataGridview1)
        {
            try
            {
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
                saveFileDialog.FilterIndex = 0;
                saveFileDialog.RestoreDirectory = true;
                saveFileDialog.CreatePrompt = false;
                saveFileDialog.Title = "导出Excel文件到";

                saveFileDialog.ShowDialog();

                Stream myStream;
                myStream = saveFileDialog.OpenFile();
                StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
                string str = "";
                try
                {
                    //写标题
                    for (int i = 0; i < dataGridview1.ColumnCount; i++)
                    {
                        if (i > 0)
                        {
                            str += "\t";
                        }
                        str += dataGridview1.Columns[i].HeaderText;
                    }

                    sw.WriteLine(str);
                    //写内容 
                    for (int j = 0; j < dataGridview1.Rows.Count; j++)
                    {
                        string tempStr = "";
                        for (int k = 0; k < dataGridview1.Columns.Count; k++)
                        {
                            if (k > 0)
                            {
                                tempStr += "\t";
                            }
                            tempStr += dataGridview1.Rows[j].Cells[k].Value.ToString();
                        }
                        sw.WriteLine(tempStr);
                    }
                    sw.Close();
                    myStream.Close();
                   
                }
                catch (Exception e)
                {
                    //SysCommon.MsgBox.SysMessageBox.ShowErrorMessageBox(null, "导出EXCEL发生错误！\r\n" + e.Message, false);
                    SysCommon.Global.mainLog.Error("调用ExportDataGridViewToExcel(DataGridView dataGridview1)出错！", e);
                    throw e;
                }
                finally
                {
                    sw.Close();
                    myStream.Close();
                }
                
            }
            catch(Exception ex)
            {
                SysCommon.Global.mainLog.Error("调用ExportDataGridViewToExcel(DataGridView dataGridview1)出错！", ex);
            }
            
        } 

    }
}
